#include "unity.h"
#include "logger.h"

// 定义测试模块
LOG_MODULE_REGISTER("TEST_MODULE");

// 测试模块注册和获取日志记录器
void test_module_register_and_get_logger(void) {
    // 获取模块日志记录器
    multi_sink::Logger* logger = get_module_logger();
    TEST_ASSERT_NOT_NULL(logger);
}

// 测试简化日志宏
void test_simplified_log_macros(void) {
    // 测试信息日志宏
    LOG_INF("Test info message from macro");
    
    // 测试警告日志宏
    LOG_WRN("Test warning message from macro");
    
    // 测试错误日志宏
    LOG_ERR("Test error message from macro");
    
    // 如果执行到这里没有崩溃，说明测试通过
    TEST_PASS();
}

// 测试在未注册模块时宏的行为
void test_macros_without_registration(void) {
    // 重新定义一个没有注册的模块
    // 这里我们不调用MULTI_SINK_LOG_MODULE_REGISTER
    
    // 测试信息日志宏（不会崩溃）
    LOG_INF("Test info message without registration");
    
    // 测试警告日志宏
    LOG_WRN("Test warning message without registration");
    
    // 测试错误日志宏
    LOG_ERR("Test error message without registration");
    
    // 如果执行到这里没有崩溃，说明测试通过
    TEST_PASS();
}

// 设置函数
void setUp(void) {
    // 在每个测试函数运行前执行
}

// 清理函数
void tearDown(void) {
    // 在每个测试函数运行后执行
}

// 主函数
int main(void) {
    UNITY_BEGIN();
    RUN_TEST(test_module_register_and_get_logger);
    RUN_TEST(test_simplified_log_macros);
    RUN_TEST(test_macros_without_registration);
    return UNITY_END();
}